WLDRPL Wildcard Replacement - CodeChef Solution


Recursion hard

Python Code:

import sys
sys.setrecursionlimit(10**8)
total_input=int(input())
for _ in range(total_input):
    s=input()
    dic={}
    def do(ini,s):
        idx,maxx,minn,sign=ini+1,0,0,True
        
        while s[idx]!=')':
            char=s[idx]
            if char=='?':
                if sign:maxx+=1
                else:minn+=1
            elif char=='+' :sign=True
            elif char=='-' :sign=False
            elif char=='(':
                arr=do(idx,s)
                if sign:
                    maxx+=arr[0]
                    minn+=arr[1]
                else:
                    maxx+=arr[1]
                    minn+=arr[0]
                idx=arr[2]
            idx+=1
        dic[ini]=maxx
        return [maxx,minn,idx]

    do(0,s)
        
    ques=int(input())
    ans=[]
    for __ in range(ques):
        ini,fin=map(int,input().split())
        if ini==fin:ans.append(1)
        else:ans.append(dic[ini-1])
    print(*ans)


Comments

Submit
0 Comments
More Questions

78B - Easter Eggs
1455B - Jumps
1225C - p-binary
1525D - Armchairs
1257A - Two Rival Students
1415A - Prison Break
1271A - Suits
259B - Little Elephant and Magic Square
1389A - LCM Problem
778A - String Game
1382A - Common Subsequence
1512D - Corrupted Array
667B - Coat of Anticubism
284B - Cows and Poker Game
1666D - Deletive Editing
1433D - Districts Connection
2B - The least round way
1324A - Yet Another Tetris Problem
246B - Increase and Decrease
22E - Scheme
1566A - Median Maximization
1278A - Shuffle Hashing
1666F - Fancy Stack
1354A - Alarm Clock
1543B - Customising the Track
1337A - Ichihime and Triangle
1366A - Shovels and Swords
919A - Supermarket
630C - Lucky Numbers
1208B - Uniqueness